class Solution {
public:
    string removeKdigits(string num, int k) {
        string ret;
        int n=num.size();
        int cnt=0;
        int i=0;
        for(;i<n;i++)
        {
            if(ret.empty())
            {
                ret+=num[i];
            }
            else{
                while(ret.size() && ret.back()>num[i])
                {
                    ret.pop_back();
                    cnt++;
                    if(cnt==k)
                        break;
                }
                ret+=num[i];
            }

            if(cnt==k)
                break;
        }
        for(i=i+1;i<n;i++)
        {
            ret+=num[i];
        }
        while(cnt<k)
        {
            ret.pop_back();
            cnt++;
        }
        while(ret.size() && ret[0]=='0')
        {
            ret.erase(ret.begin());
        }
        if(ret.empty())
        {
            return "0";
        }
        return ret;
    }
};
